package com.guodi.map.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.guodi.map.entity.MapLayer;
import com.guodi.map.entity.MapProjectDir;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @描述：专题目录/图层 Mapper 接口
 * @作者: 代鹏刚
 * @日期: 2019-12-11
 */
public interface MapProjectDirMapper extends BaseMapper<MapProjectDir> {

    /**
     * @描述:根据专题id、用户id查询授权专题图层树
     * @入参:
     * @出参:
     * @作者: 代鹏刚
     * @日期: 2019/12/11 11:00
     **/
    List<MapProjectDir> listTreeByProjectIdAndUserId(@Param("mapProjectDir")MapProjectDir mapProjectDir);

    /**
    * @描述:根据专题编码和父节点id查询专题目录树
    * @入参:
    * @出参:
    * @作者: 郑文彬
    * @日期: 2020/4/16 14:41
    **/
    List<MapProjectDir> listTreeByCodeAndParentId(@Param("code") String code , @Param("parentId")String parentId, @Param("isDir")boolean isDir);

    /**
     * @描述: 根据专题id删除专题图层数据
     * @作者: 邹艺
     * @日期: 2019/12/11 10:53
     **/
    List<MapProjectDir> deleteByProjectId(String projectId);

    /**
    * @描述: 根据ID删除专题目录树
    * @作者: 代鹏刚
    * @日期: 2020/1/7 9:35
    **/
    List<MapProjectDir> deleteByIds(@Param("ids") String[] ids);

    /**
    * @描述: 验证当前目录下是否存在重名图层
    * @作者: 代鹏刚
    * @日期: 2020/1/10 14:36
    **/
    List<MapProjectDir> verifyByNames(@Param("names") String[] names, @Param("parentId") String parentId);

    /**
    * @描述: 获取当前删除的附件names
    * @作者: 代鹏刚
    * @日期: 2020/1/10 18:26
    **/
    List<String> getDirNames(@Param("ids") String[] ids);

    /**
     * @描述: 业务系统获取已授权的专题目录
     * @作者: 代鹏刚
     * @日期: 2020/2/19 15:29
     **/
    List<MapProjectDir> getSpecialMenu(@Param("roleIds") List<String> roleId, @Param("projectId") String projectId
            , @Param("projectCode") String projectCode, @Param("layerType") String layerType, @Param("parentDirId") String parentDirId);


    /**
    * @描述: 根据专题集code查询
    * @作者: 代鹏刚
    * @日期: 2020/3/11 10:46
    **/
    List<MapProjectDir> findByCode(@Param("code") String code);

    /**
    * @描述:根据目录id查询目录下的所有图层
    * @入参:
    * @出参:
    * @作者: 郑文彬
    * @日期: 2020/4/17 9:45
    **/
    IPage<MapLayer> listLayerByDirId(Page<MapLayer> page, @Param("dirId") String dirId, @Param("code")String code, @Param("keyword")String keyword);

    /**
     * @描述: 获取有附件的所有专题节点
     * @入参:
     * @出参:
     * @作者: 陈宏成
     * @日期: 2021-04-28 09:48:00
     **/
    List<MapProjectDir> listProjectDirHasFile( @Param("roleIds")List<String> roleId, @Param("projectCode")String projectCode);

    /**
     * @作者: 林楷 2021/5/25
     * @描述: 根据专题id、父级ID查询专题授权图层列表
     * @参数: null
     * @返回: null
     */
    List<MapProjectDir> listTreeByProjectIdAndUserIdLazyLoad(@Param("mapProjectDir")MapProjectDir mapProjectDir);
    /**
     * @作者: 林楷 2021/5/25
     * @描述: 根据projectCode,parentId获取已授权的专题目录列表
     * @参数: null
     * @返回: null
     */
    List<MapProjectDir> getSpecialMenuByParentId(@Param("roleIds") List<String> roleId, @Param("projectId") String projectId
            , @Param("projectCode") String projectCode, @Param("layerType") String layerType, @Param("parentDirId") String parentDirId);

    /**
    * @描述: 根据专题目录ID更新专题目录名称
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2021/6/21 11:40
    **/
    void updateNameByIds(@Param("ids") List<String> ids, @Param("name") String name);

    /**
     * 同步图层名
     * @param layers
     */
    Boolean syncLayerNameByLayerId(@Param("layers") List<MapLayer> layers);
}
